package cn.dengta.webapp.im.service;

import java.util.*;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import cn.dengta.common.model.Status;
import cn.dengta.context.model.WesKit;
import cn.dengta.webapp.base.service.RemoteBaseService;
import cn.dengta.webapp.trade.entity.*;
import cn.dengta.webapp.trade.vo.GiftVO;
import cn.dengta.webapp.user.model.BizType;

/**
 * 电视墙礼物记录表 服务类
 *
 * @author lgy
 * @since 2022-02-28
 */
public interface RemoteGiftService extends RemoteBaseService<Gift, Long> {

	/** 获取礼物电视墙 */
	@Nullable
	List<GiftLog> findForTvWall();

	List<Gift> findAll();

	Map<Long, GiftCategory> categories(boolean flush);

	/** 获取单个礼物 */
	GiftVO getById(Long id);

	/** 获取礼物集合 */
	Map<Long, GiftVO> findGiftByIds(Collection<Long> ids);

	Map<Long, Gift> findCacheMapByType(boolean flush, @Nonnull BizType type, @Nullable Status quick, WesKit wesKit);

	List<Gift> findCacheByType(boolean flush, @Nonnull BizType type, @Nullable Status quick, WesKit wesKit);

	void flushCache(boolean flushGiftOnly, @Nullable BizType giftType);

}
